<?php
// +----------------------------------------------------------------------
// | 幕小铺
// +----------------------------------------------------------------------
// | 版权所有 2016~2020 幕小铺科技（大连）有限公司
// +----------------------------------------------------------------------
// | 2020/03/14
// +----------------------------------------------------------------------

namespace app\erp\home;
use app\common\controller\AuthCheck;

/**
 * 商品订单
 * @package app\cms\admin
 */
class GoodsOrder extends AuthCheck{
    /**
     * 首页
     * @author shqiang
     * @return json_out(code, message, data)
     */
    public function order_list(){
        //参数接收
        $params 		= $this->getParams(0);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        $user_uid    	= intval(isset($params["user_uid"]) ? $params["user_uid"] : 0);		// 订单用户id
        $order_id    	= intval(isset($params["order_id"]) ? $params["order_id"] : 0);
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);
		$order_code    	= isset($params["order_code"]) ? $params["order_code"] : '';		// 订单号
        $ps_type    	= intval(isset($params["ps_type"]) ? $params["ps_type"] : 0); 		// 配送方式 1 自提 2邮寄
        $pay_status    	= strval(isset($params["pay_status"]) ? $params["pay_status"] : '');	// 支付状态 0 待支付 1已支付(待收货) 2已完成 3已取消
        $pay_type    	= intval(isset($params["pay_type"]) ? $params["pay_type"] : 0); 	// 支付方式 1 微信支付 2支付宝支付

        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_list') -> check($params) ){
            json_out(-1001, $Validate -> getError(), []);//验证失败
        }

        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_list($user_id, $user_uid, $order_id, $store_id,$order_code, $ps_type, $pay_status, $pay_type);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], []);
        }
    }
 
    /**
     * 订单购买
     * @author Naruto
     * @return json_out(code, message, data)
     */
    public function order_buy(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        $pay_type    	= intval(isset($params["pay_type"]) ? $params["pay_type"] : 0);		// 订单用户id
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);
		$sku_arr    	= isset($params["sku_arr"]) ? $params["sku_arr"] : '';		// 订单商品
        /*$sku_arr = [
            [
                'sku_id' => 377,
                'num'    =>2,
            ],
            [
                'sku_id' => 383,
                'num'    =>3,
            ],
        ];*/ 

        
        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_buy') -> check($params) ){
            json_out(-1001, $Validate -> getError(), (object)[]);//验证失败
        }
		
		$sku_arr = json_decode($sku_arr, true);
        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_buy($user_id, $pay_type, $store_id, $sku_arr);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], (object)[]);
        }
    }

    /**
     * 订单创建
     * @author Naruto
     * @return json_out(code, message, data)
     */
    public function order_create(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        //$pay_type    	= intval(isset($params["pay_type"]) ? $params["pay_type"] : 0);		// 订单用户id
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);
        $coupon_info_id    	= intval(isset($params["coupon_info_id"]) ? $params["coupon_info_id"] : 0);		// 优惠卷id
        $sku_arr    	= isset($params["sku_arr"]) ? $params["sku_arr"] : '';		// 订单商品
        
        //$type    	= intval(isset($params["type"]) ? $params["type"] : 0);		//类型 0 直接购买 1团购购买
        /*$sku_arr = [
            [
                'sku_id' => 481,
                'num'    =>2,
            ],
            [
                'sku_id' => 541,
                'num'    =>3, 
            ],
        ];*/

        
        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_create') -> check($params) ){
            json_out(-1001, $Validate -> getError(), (object)[]);//验证失败
        }
		
		$sku_arr = json_decode($sku_arr, true);
        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_create($user_id, $store_id, $sku_arr, $coupon_info_id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], (object)[]);
        }
    }

    /**
     * 订单创建（团购）
     * @author Naruto
     * @return json_out(code, message, data)
     */
    public function order_create_tuan(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        //$pay_type    	= intval(isset($params["pay_type"]) ? $params["pay_type"] : 0);		// 订单用户id
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);
        $coupon_info_id    	= intval(isset($params["coupon_info_id"]) ? $params["coupon_info_id"] : 0);		// 优惠卷id
        $sku_arr    	= isset($params["sku_arr"]) ? $params["sku_arr"] : '';		// 订单商品
        
        //$type    	= intval(isset($params["type"]) ? $params["type"] : 0);		//类型 0 直接购买 1团购购买
        $sku_arr = json_decode($sku_arr, true);
        /*$sku_arr = [
            [
                'sponsor_id' => 16,
                'num'    =>2,
            ],
        ];*/

        
        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_create') -> check($params) ){
            json_out(-1001, $Validate -> getError(), (object)[]);//验证失败
        }
		
		
        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_create_tuan($user_id, $store_id, $sku_arr, $coupon_info_id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], (object)[]);
        }
    }

    /**
     * 订单支付
     * @author Naruto
     * @return json_out(code, message, data)
     */
    public function order_pay(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        $pay_type    	= intval(isset($params["pay_type"]) ? $params["pay_type"] : 0);		// 订单用户id
        $order_id    	= intval(isset($params["order_id"]) ? $params["order_id"] : 0);

        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_pay') -> check($params) ){
            json_out(-1001, $Validate -> getError(), []);//验证失败
        }
		
		//$sku_arr = json_decode($sku_arr, true);
        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_pay($user_id, $pay_type, $order_id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], []);
        }
    }
	
	/**
     * 取消订单
     * @author shqiang
     * @return json_out(code, message, data)
     */
    public function order_cancel(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        $user_uid    	= intval(isset($params["user_uid"]) ? $params["user_uid"] : 0);		// 订单用户id
        $order_id    	= intval(isset($params["order_id"]) ? $params["order_id"] : 0);
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);//废弃
       
        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_cancel') -> check($params) ){
            json_out(-1001, $Validate -> getError());//验证失败
        }

        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_cancel($user_id, $user_uid, $order_id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message']);
        }else{
            json_out($list['code'], $list['message']);
        }
    }
	
	/**订单完成
     * @author shqiang
     * @return json_out(code, message, data)
     */
    public function order_complete(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        $order_id    	= intval(isset($params["order_id"]) ? $params["order_id"] : 0);
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);
       
        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_complete') -> check($params) ){
            json_out(-1001, $Validate -> getError(), (object)[]);//验证失败
        }

        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_complete($user_id, $order_id, $store_id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], (object)$list['data']);
        }else{
            json_out($list['code'], $list['message'], (object)[]);
        }
    }
	
	/**删除订单
     * @author shqiang
     * @return json_out(code, message, data)
     */
    public function order_delete(){
        //参数接收
        $params 		= $this->getParams(1);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);		// 操作用户id
        $order_id    	= intval(isset($params["order_id"]) ? $params["order_id"] : 0);
        $store_id    	= intval(isset($params["store_id"]) ? $params["store_id"] : 0);
       
        //数据验证
        $Validate = validate('GoodsOrder', 'validate');
        if( !$Validate -> scene('order_delete') -> check($params) ){
            json_out(-1001, $Validate -> getError());//验证失败
        }

        //逻辑处理
        $list = controller('GoodsOrderlogic', 'logic') -> order_delete($user_id, $order_id, $store_id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message']);
        }else{
            json_out($list['code'], $list['message']);
        }
    }

}